# -*- coding: utf-8 -*-
# @author: robin
import requests
from langchain_core.prompts import ChatPromptTemplate, PromptTemplate
from langchain_core.output_parsers import JsonOutputParser
from langchain_openai import ChatOpenAI, OpenAI
import os


api_key = os.getenv("OPENAI_API_KEY")
base_url = os.getenv("OPENAI_API_BASE")

url = f"https://api.yuanfenju.com/index.php/v1/Bazi/cesuan"

query = "我的姓名是彭圣杰, 性别是男，我的出生年月是2004年09月04日下午8:00,请帮我算一下八字"

prompt = ChatPromptTemplate.from_template(
    """你是一个参数查询助手，根据用户输入内容找出相关的参数并按json格式返回。JSON字段如下: - "api_key":"cCQWMho3c5wAWLAdU8IenelQh", - "name":"姓名", "sex":"性别, 0表示男 1表示女",- "type":"日历类型,0农历,1公历,默认1", - "year":"出生年 例: 1988", - "month":"出生月 例: 8",- "day":"出生日 例: 7",- "hours":"出生时 例: 12",- "minute":"0",如果没有找到相关参数,则需要提醒用户告诉你这些内容，只返回数据结构，不需要有其他的评论,用户输入:{query}"""
)
parser = JsonOutputParser()
prompt = prompt.partial( format_instructions=parser.get_format_instructions() )
chain  = prompt | ChatOpenAI(api_key=api_key, base_url=base_url, model="gpt-3.5-turbo", temperature=0) | parser
data   = chain.invoke({"query":query})
print("1:>>>>>>" + str(data))
data["api_key"] = "cCQWMho3c5wAWLAdU8IenelQh"
print(data)

result = requests.post(url, data=data)

if result.status_code == 200:
    print("====返回数据=====")
    json = result.json()
    print(json["data"]["bazi_info"]["bazi"])